feat: support touch events for MTS#641
Conversation
* add touch event support for offscreen-dom * add touch properties support for bts and mts event handlers * add SystemInfo.screenWidth and SystemInfo.screenHeight
🦋 Changeset detectedLatest commit: b33b1e2 The changes in this PR will be included in the next version bump. This PR includes changesets to release 6 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
There was a problem hiding this comment.
Pull Request Overview
This PR introduces touch event support for MTS by extending event handler capabilities, updating system configuration with screen dimensions, and enhancing related tests.
- Merges touch properties into SystemInfo and browserConfig.
- Adds tests for touch events and screen dimensions across multiple modules.
- Updates type definitions and cloning utilities to accommodate new touch event properties.
Reviewed Changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createNativeApp.ts | Merges browserConfig into SystemInfo. |
| packages/web-platform/web-tests/tests/react/basic-mts-bindtouchstart/index.jsx | Adds test for binding touchstart events. |
| packages/web-platform/web-tests/tests/react/api-SystemInfo-height-width/index.jsx | Adds test for SystemInfo.pixelHeight/pixelWidth screen info. |
| packages/web-platform/web-tests/tests/react.spec.ts | Adds tests for touch events and screen info, with a minor typo in test.skip. |
| packages/web-platform/web-mainthread-apis/src/utils/createCrossThreadEvent.ts | Enhances cloning logic for touch event properties. |
| packages/web-platform/web-mainthread-apis/src/MainThreadRuntime.ts | Updates SystemInfo merging by spreading config.browserConfig. |
| packages/web-platform/web-core/src/apis/createLynxView.ts | Introduces screen dimension calculations for browserConfig. |
| packages/web-platform/web-constants/src/types/PageConfig.ts and Cloneable.ts | Updates type definitions to support new screen dimension data and boolean values. |
| packages/web-platform/offscreen-document/src/main/initOffscreenDocument.ts | Modifies cloning of additional touch event properties using transferToCloneable. |
| .cspell/lynx.txt and .changeset/* | Updates documentation and change logs for touch event support. |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: PupilTong <12288479+PupilTong@users.noreply.github.com>
…nDocument.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: PupilTong <12288479+PupilTong@users.noreply.github.com>
Bundle ReportChanges will increase total bundle size by 881 bytes (0.14%) ⬆️. This is within the configured threshold ✅ Detailed changes
Affected Assets, Files, and Routes:view changes for bundle: @lynx-js/web-explorer-web-array-pushAssets Changed:
|
CodSpeed Performance ReportMerging #641 will not alter performanceComparing Summary
|
❌ 1 Tests Failed:
View the top 2 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @lynx-js/react@0.108.0 ### Minor Changes - Reverts #239: "batch multiple patches for main thread communication" ([#649](#649)) This reverts the change that batched updates sent to the main thread in a single render pass. ### Patch Changes - Add support for batch rendering in `<list>` with async resolution of sub-tree properties and element trees. ([#624](#624)) Use the `experimental-batch-render-strategy` attribute of `<list>`: ```tsx <list /** * Batch render strategy: * 0: (Default) Disabled - No batch rendering * 1: Basic - Only batch rendering enabled * 2: Property Resolution - Batch render with async property resolution for list item subtree * 3: Full Resolution - Batch render with async property and element tree resolution for list item subtree */ experimental-batch-render-strategy={3} ></list> ``` - rename @lynx-js/test-environment to @lynx-js/testing-environment ([#704](#704)) - Auto import `@lynx-js/react/experimental/lazy/import` when using `import(url)` ([#667](#667)) - Auto import `@lynx-js/react/experimental/lazy/import` when using `<component is={url} />` ([#666](#666)) - Fixed a race condition when updating states and GlobalProps simultaneously. ([#707](#707)) This fix prevents the "Attempt to render more than one `<page />`" error from occurring during normal application usage. - Fix error like `Unterminated string constant` when using multi-line JSX StringLiteral. ([#654](#654)) ## @lynx-js/testing-environment@0.1.0 ### Minor Changes - Switch to ESM package format by setting `"type": "module"`. ([#703](#703)) ### Patch Changes - rename @lynx-js/test-environment to @lynx-js/testing-environment ([#704](#704)) ## @lynx-js/web-platform-rsbuild-plugin@0.1.0 ### Minor Changes - feat: add new parameter `nativeModulesPath` to `pluginWebPlatform({})`. ([#668](#668)) After this commit, you can use `nativeModulesPath` to package custom nativeModules directly into the worker, and no longer need to pass `nativeModulesMap` to lynx-view. Here is an example: - `native-modules.ts`: ```ts // index.native-modules.ts export default { CustomModule: function (NativeModules, NativeModulesCall) { return { async getColor(data, callback) { const color = await NativeModulesCall("getColor", data); callback(color); }, }; }, }; ``` - plugin config: ```ts // rsbuild.config.ts import { pluginWebPlatform } from "@lynx-js/web-platform-rsbuild-plugin"; import { defineConfig } from "@rsbuild/core"; export default defineConfig({ plugins: [ pluginWebPlatform({ // replace with your actual native-modules file path nativeModulesPath: path.resolve(__dirname, "./index.native-modules.ts"), }), ], }); ``` - feat: Provides Rsbuild plugin for Web projects in Lynx Web Platform, currently supports polyfill about lynx. ([#606](#606)) ## @lynx-js/rspeedy@0.9.4 ### Patch Changes - Bump Rsbuild v1.3.17 with Rspack v1.3.9. ([#708](#708)) - Support `performance.profile`. ([#691](#691)) - Support CLI flag `--mode` to specify the build mode. ([#723](#723)) - Enable native Rsdoctor plugin by default. ([#688](#688)) Set `tools.rsdoctor.experiments.enableNativePlugin` to `false` to use the old JS plugin. ```js import { defineConfig } from "@lynx-js/rspeedy"; export default defineConfig({ tools: { rsdoctor: { experiments: { enableNativePlugin: false, }, }, }, }); ``` See [Rsdoctor - 1.0](https://rsdoctor.dev/blog/release/release-note-1_0#-faster-analysis) for more details. - Bump Rsbuild v1.3.14 with Rspack v1.3.8. ([#630](#630)) ## @lynx-js/react-rsbuild-plugin@0.9.9 ### Patch Changes - Fix runtime error: "SyntaxError: Identifier 'i' has already been declared". ([#651](#651)) - Enable runtime profiling when `performance.profile` is set to true. ([#722](#722)) - fix: resolve page crash on development mode when enabling `experimental_isLazyBundle: true` ([#653](#653)) - Support `@lynx-js/react` v0.108.0. ([#649](#649)) - Updated dependencies \[[`ea4da1a`](ea4da1a), [`ca15dda`](ca15dda), [`f8d369d`](f8d369d), [`ea4da1a`](ea4da1a)]: - @lynx-js/react-webpack-plugin@0.6.13 - @lynx-js/runtime-wrapper-webpack-plugin@0.0.10 - @lynx-js/react-alias-rsbuild-plugin@0.9.9 - @lynx-js/react-refresh-webpack-plugin@0.3.2 ## @lynx-js/tailwind-preset@0.0.3 ### Patch Changes - Support `hidden`, `no-underline` and `line-through` utilities. ([#745](#745)) ## @lynx-js/offscreen-document@0.0.2 ### Patch Changes - feat: support touch events ([#641](#641)) ## @lynx-js/web-constants@0.13.1 ### Patch Changes - feat: support touch events for MTS ([#641](#641)) now we support - main-thread:bindtouchstart - main-thread:bindtouchend - main-thread:bindtouchmove - main-thread:bindtouchcancel - Updated dependencies \[]: - @lynx-js/web-worker-rpc@0.13.1 ## @lynx-js/web-core@0.13.1 ### Patch Changes - fix: some inline style properties cause crash ([#647](#647)) add support for the following css properties - mask - mask-repeat - mask-position - mask-clip - mask-origin - mask-size - gap - column-gap - row-gap - image-rendering - hyphens - offset-path - offset-distance - feat: support touch events for MTS ([#641](#641)) now we support - main-thread:bindtouchstart - main-thread:bindtouchend - main-thread:bindtouchmove - main-thread:bindtouchcancel - feat: add SystemInfo.screenWidth and SystemInfo.screenHeight ([#641](#641)) - Updated dependencies \[[`c9ccad6`](c9ccad6), [`9ad394e`](9ad394e), [`f4cfb70`](f4cfb70), [`c9ccad6`](c9ccad6), [`839d61c`](839d61c)]: - @lynx-js/offscreen-document@0.0.2 - @lynx-js/web-mainthread-apis@0.13.1 - @lynx-js/web-worker-runtime@0.13.1 - @lynx-js/web-constants@0.13.1 - @lynx-js/web-worker-rpc@0.13.1 ## @lynx-js/web-elements@0.7.1 ### Patch Changes - fix(web): x-swiper-item threshold updated to 20 ([#639](#639)) - fix: In React19, setter and getter functions are treated as properties, making it impossible to retrieve the current value via attributes. ([#639](#639)) ## @lynx-js/web-explorer@0.0.7 ### Patch Changes - feat: use nativeModulesPath instead of nativeModulesMap to lynx-view. ([#668](#668)) - fix: fork @vant/touch-emulator and make it work with shadowroot ([#662](#662)) - fix: loading errors caused by script import order ([#665](#665)) - chore: update homepage ([#645](#645)) ## @lynx-js/web-mainthread-apis@0.13.1 ### Patch Changes - fix: some inline style properties cause crash ([#647](#647)) add support for the following css properties - mask - mask-repeat - mask-position - mask-clip - mask-origin - mask-size - gap - column-gap - row-gap - image-rendering - hyphens - offset-path - offset-distance - feat: support touch events for MTS ([#641](#641)) now we support - main-thread:bindtouchstart - main-thread:bindtouchend - main-thread:bindtouchmove - main-thread:bindtouchcancel - Updated dependencies \[[`c9ccad6`](c9ccad6)]: - @lynx-js/web-constants@0.13.1 ## @lynx-js/web-worker-runtime@0.13.1 ### Patch Changes - feat: support for using `lynx.queueMicrotask`. ([#702](#702)) - feat: support touch events for MTS ([#641](#641)) now we support - main-thread:bindtouchstart - main-thread:bindtouchend - main-thread:bindtouchmove - main-thread:bindtouchcancel - feat: provide comments for `@lynx-js/web-platform-rsbuild-plugin`. ([#668](#668)) - Updated dependencies \[[`c9ccad6`](c9ccad6), [`9ad394e`](9ad394e), [`c9ccad6`](c9ccad6)]: - @lynx-js/offscreen-document@0.0.2 - @lynx-js/web-mainthread-apis@0.13.1 - @lynx-js/web-constants@0.13.1 - @lynx-js/web-worker-rpc@0.13.1 ## @lynx-js/react-webpack-plugin@0.6.13 ### Patch Changes - feat: add `experimental_isLazyBundle` option, it will disable snapshot HMR for standalone lazy bundle ([#653](#653)) - Add the `profile` option to control whether `__PROFILE__` is enabled. ([#722](#722)) - Support `@lynx-js/react` v0.108.0. ([#649](#649)) ## @lynx-js/runtime-wrapper-webpack-plugin@0.0.10 ### Patch Changes - feat: add `experimental_isLazyBundle` option, it will disable lynxChunkEntries for standalone lazy bundle ([#653](#653)) ## create-rspeedy@0.9.4 ## @lynx-js/react-alias-rsbuild-plugin@0.9.9 ## upgrade-rspeedy@0.9.4 ## @lynx-js/web-worker-rpc@0.13.1 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
close #54